package com.sinosoft.vaccinetoai.common.enmu;


import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Objects;

/**
 * @author xiazhihao
 * @ClassName: IStringBaseEnum
 * @ClassNameExplain:
 * @Description: 公共枚举接口，用于拥有 String 类型 code 的枚举类
 * @date 2023/12/27 14:38
 */
public interface IStringBaseEnum {

    // 使用 String 类型的 code
    String getCode();

    String getDesc();

    // 通用方法，根据 code 获取对应的枚举类型
    @JsonCreator
    static <T extends IStringBaseEnum> T fromCode(Class<T> enumClass, String code) {
        if (Objects.isNull(code)) {
            return null;
        }

        T[] enumConstants = enumClass.getEnumConstants();
        if (enumConstants != null && enumConstants.length > 0) {
            for (T enumConstant : enumConstants) {
                if (code.equals(enumConstant.getCode())) {
                    return enumConstant;
                }
            }
        }
        return null;
    }
}

